home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / spool100.arc / SPOOLDEM.PAS < prev    next >
Pascal/Delphi Source File  |  1990-04-29  |  5KB  |  165 lines

  1. program SpoolerDemo;
  2.  
  3. uses Crt,Dos,Spooler;
  4.  
  5. const NUL = #00;
  6.       ESC = #27;
  7.  
  8. var SStatus : word;
  9.     k,
  10.     e       : char;
  11.     Queue   : QueueType;
  12.     s       : string;
  13.  
  14. { ------------------------------------------------------------- SpoolerReport }
  15. procedure SpoolerReport(DosErrorOnly : boolean);
  16.  
  17.   begin
  18.     SStatus := SpoolerStatus;
  19.     if not DosErrorOnly then LowVideo; write('Stato dello Spooler: ');
  20.     case SStatus of
  21.       SPOOLER_INSTALLED           : if not DosErrorOnly then
  22.                                       begin
  23.                                         HighVideo; writeln('INSTALLATO');
  24.                                         writeln;
  25.                                       end;
  26.       SPOOLER_NOT_INSTALLED       : if not DosErrorOnly then
  27.                                       begin
  28.                                         HighVideo; writeln('NON INSTALLATO');
  29.                                         writeln;
  30.                                         LowVideo;  write('Dai il comando: ');
  31.                                         HighVideo; write('PRINT /D:PRN /Q:32');
  32.                                         LowVideo;  writeln(' (da DOS).');
  33.                                         writeln;
  34.                                       end;
  35.       SPOOLER_CANNOT_BE_INSTALLED : if not DosErrorOnly then
  36.                                       begin
  37.                                         HighVideo; write('NON INSTALLATO');
  38.                                         LowVideo;  write(' e ');
  39.                                         HighVideo; writeln('NON INSTALLABILE');
  40.                                         writeln;
  41.                                       end;
  42.       else begin
  43.              LowVideo;  write('Probabile ');
  44.              HighVideo; writeln('ERRORE MS-DOS ',SStatus);
  45.              writeln;
  46.            end;
  47.     end;
  48.   end;
  49.  
  50. { -------------------------------------------------------------------- Banner }
  51. procedure Banner;
  52.  
  53.   begin
  54.     DirectVideo := false;
  55.     ClrScr;
  56.  
  57.     LowVideo;  write('Test della ');
  58.     HighVideo; write('SPOOLER UNIT');
  59.     LowVideo;  write(' ver. ');
  60.     HighVideo; write('1.0');
  61.     LowVideo;  write(' del ');
  62.     HighVideo; write('21/04/90');
  63.  
  64.     writeln; writeln;
  65.   end;
  66.  
  67. { ------------------------------------------------------------------- WaitKey }
  68. function WaitKey(prompt : string; var extkey : char) : char;
  69.  
  70.   begin
  71.     LowVideo; write(prompt);
  72.     k := readkey;
  73.     if (k=NUL) then extkey := readkey;
  74.     writeln;
  75.     WaitKey := k;
  76.   end;
  77.  
  78. { ---------------------------------------------------------- DisplayQueueList }
  79. procedure DisplayQueueList;
  80.  
  81. var i,
  82.     c  : byte;
  83.  
  84.   begin
  85.     i := 1;
  86.     c := 0;
  87.     writeln;
  88.     while ((length(Queue[i])<>0) and (i<=MAX_SPOOLER_ENTRY)) do
  89.       begin
  90.         HighVideo; write(Queue[i]);
  91.         LowVideo;  gotoxy(65,wherey); if (i=1) then writeln(' è in stampa.')
  92.                                                else writeln(' è in coda.');
  93.         inc(i);
  94.         inc(c);
  95.       end;
  96.     if (c=0) then
  97.       begin
  98.         HighVideo; writeln('La coda è vuota.');
  99.       end;
  100.     writeln;
  101.   end;
  102.  
  103. { -------------------------------------------------------------- SubmitReport }
  104. procedure SubmitReport;
  105.  
  106.   begin
  107.     case SpoolerResult of
  108.       0          :
  109.         begin
  110.           ListQueue(Queue);
  111.           DisplayQueueList;
  112.         end;
  113.       QUEUE_FULL :
  114.         begin
  115.           k := WaitKey('CODA PIENA, premi un tasto per vedere i files in coda.',e);
  116.           DisplayQueueList;
  117.         end;
  118.       else
  119.         begin
  120.           str(SpoolerResult,s);
  121.           k := WaitKey('ERRORE SCONOSCIUTO ('+s+'), premi un tasto.',e);
  122.         end;
  123.     end;
  124.   end;
  125.  
  126. { ============================================================== SPOOLER TEST }
  127. begin
  128.   Banner;
  129.   SpoolerReport(false);
  130.   if (SStatus<>SPOOLER_INSTALLED) then halt(1);
  131.  
  132.   k := WaitKey('SPEGNI o metti in LOCAL la STAMPANTE e premi un tasto.',e);
  133.  
  134.   ClrScr;
  135.  
  136.   SubmitFileS('SPOOL*.*',Queue);
  137.   SubmitReport;
  138.  
  139.   k := WaitKey('Premi un tasto che CANCELLO SPOOLER.PAS (dalla coda).',e);
  140.  
  141.   CancelFiles('SPOOLER.PAS');
  142.   ListQueue(Queue);
  143.   DisplayQueueList;
  144.  
  145.   k := WaitKey('Premi un tasto che CANCELLO TUTTI i FILES (dalla coda).',e);
  146.  
  147.   CancelAllFiles;
  148.   ListQueue(Queue);
  149.   DisplayQueueList;
  150.  
  151.   k := WaitKey('Se vuoi STAMPARE SPOOLER.DOC ACCENDI e METTI ON LINE la STAMPANTE o premi ESC.',e);
  152.  
  153.   if (k<>ESC) then
  154.     begin
  155.       SubmitFiles('SPOOLER.PAS',Queue);
  156.       SubmitReport;
  157.       k := WaitKey('Premi un tasto.',e);
  158.     end;
  159.  
  160.   ClrScr;
  161.   LowVideo;  write('Thank you for using ');
  162.   HighVideo; write('SPOOLER UNIT');
  163.   LowVideo;  writeln('.');
  164.   writeln;
  165. end.